home *** CD-ROM | disk | FTP | other *** search
- #!/usr/app/bin/perl
-
- eval 'exec /usr/app/bin/perl -S $0 ${1+"$@"}'
- if 0; # not running under some shell
-
- use Gimp qw(:auto __ N_);
- use Gimp::Fu;
-
- #Gimp::set_trace(TRACE_ALL);
-
- register "repdup",
- "Repeats and duplicates a selection.",
- "Hopefully self-explanatory...",
- "Claes G Lindblad <claesg\@algonet.se>",
- "Claes G Lindblad <claesg\@algonet.se>",
- "990328",
- N_"<Image>/Edit/Repeat & Duplicate...",
- "*",
- [
- [PF_SPINNER, "repeats", "Number of repeats",
- 3, [1, 1000, 1] ],
- [PF_SPINNER, "xoffset", "X-offset",
- 50, [-1000, 1000, 1] ],
- [PF_SPINNER, "yoffset", "Y-offset",
- 50, [-1000, 1000, 1] ],
- ],
- sub {
- my ($img, $layer, $repeats, $xoffset, $yoffset) = @_;
-
- eval { $img->undo_push_group_start };
- @b = gimp_selection_bounds($img);
- my $w = $b[3] - $b[1];
- my $h = $b[4] - $b[2];
- gimp_edit_copy($layer);
- gimp_selection_none($img);
- for ($i = 0; $i < $repeats; $i++) {
- $b[1] = $b[1] + $xoffset;
- $b[2] = $b[2] + $yoffset;
- gimp_rect_select($img, $b[1], $b[2], $w, $h, REPLACE, 0, 0);
- $bit_bucket = gimp_edit_paste($layer, 0);
- gimp_floating_sel_anchor($bit_bucket);
- gimp_selection_none($img);
- }
- eval { $img->undo_push_group_end };
- return $img;
- };
- exit main;
-